package util;

import java.util.ArrayList;
import java.util.List;

public class TagsBinarySort {
	public static void SortTags(List<String> list,String word){
		
		if(word==null || "".equals(word.trim())){
			return;
		}		
		int first=0;
		int end=list.size()-1;
		int mid=0;
//		System.out.println(word+"  hashcode:"+word.hashCode());
		if (-1==end){
			list.add(word);
			return ;
		}
		
		
		while(first<end){
			mid=(first+end)/2;
			if(word.hashCode() <list.get(mid).hashCode())
				first=mid+1;
			else if(word.hashCode() >list.get(mid).hashCode())
				if(0==mid)
					end=0;
				else
					end=mid-1;
			else 
				return;
		}
		if (first>=end){
			if(word.hashCode()<list.get(first).hashCode())
				list.add(first+1, word);
			else if(word.hashCode()>list.get(first).hashCode())
				list.add(first,word);
				
		}
	}
	
	public static List<String> GetSortedList(String[] tags){
		List<String> list = new ArrayList<String>();
		for(String tag:tags){
			if("".equals(tag.trim()))
				continue;
			SortTags(list,tag);
		}
		return list;
	}
	
	public static String getSortedTags(String tags ,String split){
		List<String> list = new ArrayList<String>();
		list=GetSortedList(tags.split(split));
		
		return list.toString();		
	}
	
	public static void main(String[] args) {
		
		List<String>il=new ArrayList<String>();
		il=GetSortedList(" 百度 中国 同学   中国  bug 中国 口袋里的 中过 百度 baidu 百读 bug bugs 中国 中国 中国".split(" "));
		for(int i=0;i<il.size();i++){
			System.out.println("tags "+i+"\t:"+il.get(i));
		}
		
		System.out.println(il.toString());
		System.out.println(getSortedTags(" 百度 中国 同学   中国  bug 中国 口袋里的 中过 百度 baidu 百读 bug bugs 中国 中国 中国"," "));
	}
}
